package com.wangsd.common.component;

import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;

@Slf4j
public class WxMiniService {

    private WxMaService miniService;

    public WxMiniService (String appid, String secret) {
        WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
        config.setAppid(appid);
        config.setSecret(secret);
//            config.setToken(StringUtils.trimToNull(null));
//            config.setAesKey(StringUtils.trimToNull(null));
        config.setMsgDataFormat("JSON");
        miniService = new WxMaServiceImpl();
        miniService.setWxMaConfig(config);
    }

    /**
     * 小程序登陆
     *
     * @param code
     * @return
     */
    public WxMaJscode2SessionResult login(String code) {
        WxMaJscode2SessionResult data = null;
        try {
            data = miniService.getUserService().getSessionInfo(code);
        } catch (WxErrorException e) {
            e.printStackTrace();
        }
        return data;
    }

    /**
     * 获取用户手机号码
     *
     * @param sessionKey    login之后得到的sessionKey
     * @param encryptedData
     * @param ivStr
     * @return
     */
    public WxMaPhoneNumberInfo getPhoneNoInfo(String sessionKey, String encryptedData, String ivStr) {
        WxMaPhoneNumberInfo data = miniService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, ivStr);
        return data;
    }
}
